package com.woniu.controller;

import com.woniu.common.CommonResult;
import com.woniu.entity.PersonUser;
import com.woniu.entity.UsedProductComment;
import com.woniu.service.PersonUserService;
import com.woniu.service.UsedProductCommentService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 商品评价表(UsedProductComment)表控制层
 *
 * @author makejava
 * @since 2020-03-23 09:48:24
 */
@Controller
@RequestMapping("/usedProductComment")
public class UsedProductCommentController {
    /**
     * 服务对象
     */
    @Resource
    private UsedProductCommentService usedProductCommentService;

    @Resource
    PersonUserService personUserService;

    /**
     * 功能描述: 根据商品Id查询所有评论
     * @Param: [productId]
     * @Return: com.woniu.common.CommonResult
     * @Author: yanghan
     * @Date: 2020/4/3 2:15
     */
    @GetMapping("/findAllByProductId/{productId}")
    public @ResponseBody CommonResult findAllByProductId(@PathVariable("productId")Integer productId){
        try {
            List<UsedProductComment> usedProductComments = usedProductCommentService.findAllByProductId(productId);
            return CommonResult.success("查询成功",usedProductComments);
        } catch (Exception e) {
            e.printStackTrace();
            return CommonResult.failed("查询失败");
        }
    }

    /**
     * 功能描述: 根据商品Id查询商品是否有评论
     * @Param: [productId]
     * @Return: com.woniu.common.CommonResult
     * @Author: yanghan
     * @Date: 2020/4/3 2:14
     */
    @GetMapping("/selectOrderByProductId/{productId}")
    public @ResponseBody CommonResult selectOrderByProductId(@PathVariable("productId")Integer productId){
        List<UsedProductComment> usedProductComments = null;
        try {
            usedProductComments = usedProductCommentService.findAllByProductId(productId);
            //当前商品有评论就是0，没评论就是1
            if (usedProductComments.size()>0){
                return CommonResult.success("0");
            }else {
                return CommonResult.success("1");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return CommonResult.failed("0");
        }

    }

    /**
     * 功能描述: 查询当前订单评论是否有值
     * @Param: [orderId]
     * @Return: com.woniu.common.CommonResult
     * @Author: yanghan
     * @Date: 2020/4/2 19:57
     */
    @GetMapping("/selectOrderByNull/{orderId}")
    public @ResponseBody CommonResult selectOrderByNull(@PathVariable("orderId")Integer orderId){
        List<UsedProductComment> usedProductComments = null;
        try {
            usedProductComments = usedProductCommentService.findAllByOrderId(orderId);
            //当前商品有评论就是0，没评论就是1
            if (usedProductComments.size()>0){
                return CommonResult.success("0");
            }else {
                return CommonResult.success("1");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return CommonResult.failed("0");
        }

    }

    /**
     * 功能描述: 保存评论
     * @Param: [usedProductComment]
     * @Return: com.woniu.common.CommonResult
     * @Author: yanghan
     * @Date: 2020/4/2 19:56
     */
    @PostMapping("/saveComment")
    public @ResponseBody CommonResult saveComment(UsedProductComment usedProductComment){
        //获取当前登录的用户的用户名
//        String name = cookieUtil.getName();
        String name = "admin";
        //查询用户Id
        PersonUser personUser = personUserService.findIdByName(name);
        usedProductComment.setCommentTime(new Date());
        usedProductComment.setUserId(personUser.getId());
        //保存到数据库
        try {
            usedProductCommentService.insert(usedProductComment);
            return CommonResult.success("评价成功");
        } catch (Exception e) {
            e.printStackTrace();
            return CommonResult.failed("评价失败");
        }
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("selectOne")
    public UsedProductComment selectOne(Integer id) {
        return this.usedProductCommentService.queryById(id);
    }

}